From ac9725dff60cf88ef535d816a58366eba60d91ae Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Thu, 13 Oct 2005 08:06:27 +0100 Subject: [PATCH] Currently, we mark an IO request to STATE_IOREQ_READY state before calling IO handlers in xen HV, i.e. vmx_portio_intercept or vmx_mmio_intercept. Actually, STATE_IOREQ_READY means it's ready for DM handling, only if IO handlers in xen HV won't handle it, it should be passed to DM. This patch fixes this issue. Signed-off-by: Yunhong Jiang Signed-off-by: Xin Li Signed-off-by: Nakajima Jun --- xen/arch/x86/vmx.c | 4 ++-- xen/arch/x86/vmx_platform.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/xen/arch/x86/vmx.c b/xen/arch/x86/vmx.c index dd5a6b87e6..c403002bef 100644 --- a/xen/arch/x86/vmx.c +++ b/xen/arch/x86/vmx.c @@ -646,14 +646,14 @@ void send_pio_req(struct cpu_user_regs *regs, unsigned long port, } else p->u.data = value; - p->state = STATE_IOREQ_READY; - if (vmx_portio_intercept(p)) { /* no blocking & no evtchn notification */ clear_bit(ARCH_VMX_IO_WAIT, &v->arch.arch_vmx.flags); return; } + p->state = STATE_IOREQ_READY; + evtchn_send(iopacket_port(v->domain)); vmx_wait_io(); } diff --git a/xen/arch/x86/vmx_platform.c b/xen/arch/x86/vmx_platform.c index cef786b14a..cd1a5b3b02 100644 --- a/xen/arch/x86/vmx_platform.c +++ b/xen/arch/x86/vmx_platform.c @@ -643,14 +643,14 @@ void send_mmio_req(unsigned char type, unsigned long gpa, } else p->u.data = value; - p->state = STATE_IOREQ_READY; - if (vmx_mmio_intercept(p)){ p->state = STATE_IORESP_READY; vmx_io_assist(v); return; } + p->state = STATE_IOREQ_READY; + evtchn_send(iopacket_port(v->domain)); vmx_wait_io(); } -- 2.30.2